package com.molichuxing.services.infrastructure.service;

import com.molichuxing.framework.service.RootService;
import com.molichuxing.services.infrastructure.dto.request.create.EnterpriseCarHandoverCreateDto;
import com.molichuxing.services.infrastructure.dto.response.EnterpriseCarHandoverDto;
import com.molichuxing.services.property.EnterpriseCarHandoverTypeEnum;

import java.util.List;
import java.util.Map;

/**
 * 企业订单车辆交接
 *
 * @Author zoumingyu
 * @Date 2020年06月04日
 */
public interface EnterpriseCarHandoverService extends RootService {

    /**
     * 获取企业订单车辆交接信息
     *
     * @param orderCode 订单号
     * @param type      交接类型
     * @return
     */
    List<EnterpriseCarHandoverDto> getEnterpriseCarHandover(Long orderCode, EnterpriseCarHandoverTypeEnum type);

    /**
     * 获取企业订单车辆交车信息
     *
     * @param orderCode 订单号
     * @return
     */
    List<EnterpriseCarHandoverDto> getEnterpriseCarDelivery(Long orderCode);

    /**
     * 获取企业订单车辆还车（退租）信息
     *
     * @param orderCode 订单号
     * @return
     */
    List<EnterpriseCarHandoverDto> getEnterpriseCarReturn(Long orderCode);

    /**
     * 车辆交接添加
     *
     * @param enterpriseCarHandoverCreateDto
     * @return
     */
    Boolean createCarhandover(EnterpriseCarHandoverCreateDto enterpriseCarHandoverCreateDto);

    /**
     * 交车信息
     *
     * @param id
     * @return
     */
    EnterpriseCarHandoverDto getById(Integer id);

    /**
     * 根据还车0退租时间查询列表
     * @param params
     * @return
     */
    List<EnterpriseCarHandoverDto> getByReturnedTime(Map<String, Object> params);

    /**
     * 根据车辆ID和订单Code查询
     * @param carHandoverDtoList
     * @param delivery
     * @return
     */
    Map<String, EnterpriseCarHandoverDto> getByDto(List<EnterpriseCarHandoverDto> carHandoverDtoList, EnterpriseCarHandoverTypeEnum delivery);
}
